package com.seafood.service;

import com.seafood.dto.LoginResponseDTO;
import com.seafood.dto.UserDTO;
import com.seafood.dto.UserLoginDTO;
import com.seafood.dto.UserRegisterDTO;
import com.seafood.entity.User;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     */
    UserDTO register(UserRegisterDTO registerDTO);
    
    /**
     * 用户登录
     */
    LoginResponseDTO login(UserLoginDTO loginDTO);
    
    /**
     * 根据用户名查找用户
     */
    User findByUsername(String username);
    
    /**
     * 根据用户名或邮箱查找用户
     */
    User findByUsernameOrEmail(String usernameOrEmail);
    
    /**
     * 根据ID查找用户
     */
    User findById(Long id);
    
    /**
     * 更新用户信息
     */
    UserDTO updateUser(Long id, UserDTO userDTO);
    
    /**
     * 检查用户名是否存在
     */
    boolean existsByUsername(String username);
    
    /**
     * 检查邮箱是否存在
     */
    boolean existsByEmail(String email);
    
    /**
     * 转换User实体为UserDTO
     */
    UserDTO convertToDTO(User user);
}